#ifndef _UI_DATA
#define _UI_DATA

#include <string>

struct input_ingdirect_interface
{
	virtual const std::string get_pinpad_sequence()=0;
	virtual const std::string get_pin_sequence() =0;
};

class input_ingdirect_data
{
public: 
	static const char* pinpad_sequence;
	static const char* pin_sequence;
	static const char* is_correct_sequence;		
};


struct input_wait_state_interface
{
	virtual bool wait_ready_state_interactive() =0;
	virtual bool wait_ready_state_token() =0;
};

class input_wait_state_data
{
public:
	static const char* is_complete_page;	
	static const char* is_token_ready;

};


struct input_interface: public input_wait_state_interface, public input_ingdirect_interface
{		
};


class input_data:  public input_interface, 
	public input_ingdirect_data, public input_wait_state_data
{

public:		

	const std::string get_pinpad_sequence();
	const std::string get_pin_sequence();
	bool wait_ready_state_interactive();
	bool wait_ready_state_token();

	static const std::string get_input_sequence(const char** _input_message = NULL, 
		unsigned short _len = 10);	
private:
	static bool wait_ready_state(std::string const& _str);
};


#endif
